home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 2
/
Atari Mega Archive CD - Volume 2.iso
/
8bit
/
cislib_b
/
sneaka.act
< prev
next >
Wrap
Text File
|
1995-04-22
|
13KB
|
1 lines
; SNEAK ATTACK¢¢¢MODULE¢¢BYTE¢ CHRBASE=756,MAX,BKGRND=710,FATE=53770,LEVEL=[1],CURSIN=752,STICK=632,PS,LOUD=[0],INDX=[0],DOWNL=[0],DOWNR=[0],LOUD1=[0],¢ SND1=$D208,SND2=$D20F,FREQ=[169],WSYNC=$D40A,COLBK=$D018,NMIEN=$D40E,HARD=[15],CONSOL=53279¢¢¢CARD¢ SCRN=88,RAMSET,HIMEM=$2E5,SCORE=[0],COMP=[300],SDLST=560,VDSLST=512¢¢¢CARD ARRAY LINEPT(24)¢¢BYTE ARRAY¢ CHARSET,CHOPPERSTATUS(30),CHOPPERX(30),CHOPPERY(30),EXPX(60),EXPY(60),EXPSTATUS(60),TRSTATUS(30),TRX(30),TRY(30),MISSTATUS(30),¢ MISX(30),MISY(30),LL(20),RR(20),DLIST,¢ SHAPETABLE(0)=¢ [254 16 124 71 127 12 62 0¢ 127 8 62 226 254 24 126 0¢ 96 96 48 48 24 60 231 255¢ 24 24 24 24 24 60 231 255¢ 6 6 12 12 24 60 231 255¢ 128 85 17 66 24 170 91 131¢ 60 126 255 255 195 66 36 24¢ 60 36 24 255 60 24 36 102¢ 0 0 0 0 0 0 0 0¢ 60 36 24 255 60 24 36 102 ¢ 60 36 219 255 60 24 36 102 ¢ 60 60 24 60 60 24 24 28¢ 60 60 24 60 60 60 102 195]¢¢¢PROC DOWNLOAD()¢CARD INDEX¢BYTE VAL¢ RAMSET=(HIMEM-$400)&$FC00¢ CHRBASE=RAMSET RSH 8¢ HIMEM=RAMSET¢ FOR INDEX=0 TO 1023 DO¢ VAL=PEEK(57344+INDEX)¢ POKE(RAMSET+INDEX,VAL)¢ OD¢ CHARSET=RAMSET¢RETURN¢¢¢PROC DLINT()¢ [$48 $8A $48 $98 $48]¢ WSYNC=1¢ COLBK=50¢ [$68 $A8 $68 $AA $68 $40]¢ ¢¢PROC SCORELINE()¢ DLIST=SDLST ¢ VDSLST=DLINT¢ DLIST(27)=130¢ NMIEN=$C0¢RETURN¢¢¢PROC UPDATE()¢ POSITION(1,23)¢ PRINT("SCORE: ")¢ POSITION(8,23)¢ PRINTC(SCORE)¢ POSITION(18,23)¢ PRINT("LEVEL: ")¢ POSITION(25,23)¢ PRINTB(LEVEL)¢RETURN¢¢¢PROC TITLE()¢BYTE COLPF0=53270,COLPF1=53271,COLPF2=53273,COLPF3=53273,RTCLOCK=20,VCOUNT=54283¢ GRAPHICS(18)¢ POSITION(3,4)¢ PRINTD(6,"SNEAK ATTACK")¢ POSITION (8,5)¢ PRINTD(6,"BY")¢ POSITION(3,7)¢ PRINTD(6,"DAVID PLOTKIN")¢ POSITION(3,9)¢ PRINTD(6,"ספדצצ צקIJפק")¢ WHILE CONSOL<>6 DO¢ COLPF3=FATE¢ WSYNC=0¢ COLPF0=128-VCOUNT+RTCLOCK RSH 2¢ COLPF1=VCOUNT+RTCLOCK RSH 2¢ OD¢RETURN¢¢¢¢PROC GR0INIT()¢CARD XX¢ GRAPHICS(0)¢ CURSIN=1¢ PRINT(" ")¢ FOR XX=0 TO 23 DO¢ LINEPT(XX)=SCRN+(40*XX)¢ OD¢ FOR XX=0 TO 29 DO¢ CHOPPERSTATUS(XX)=0¢ CHOPPERX(XX)=0¢ CHOPPERY(XX)=0¢ MISX(XX)=0¢ MISY(XX)=0¢ MISSTATUS(XX)=0¢ TRSTATUS(XX)=0¢ OD¢ FOR XX=0 TO 59 DO¢ EXPSTATUS(XX)=0¢ OD¢ FOR XX=0 TO 19 DO¢ LL(XX)=0¢ RR(XX)=0¢ OD¢ BKGRND=0¢ UPDATE()¢RETURN¢¢¢¢PROC PLOT0(BYTE X,Y,CH)¢BYTE ARRAY LINE¢ LINE=LINEPT(Y)¢ LINE(X)=CH¢RETURN¢¢¢¢BYTE FUNC LOCATE0(BYTE X,Y)¢BYTE ARRAY LINE¢ LINE=LINEPT(Y)¢RETURN(LINE(X))¢¢¢¢PROC NOISE()¢ IF LOUD=0 AND LOUD1=0 AND FREQ=169 THEN¢ RETURN¢ FI¢ IF LOUD THEN¢ LOUD==-2¢ SOUND(0,90,8,LOUD)¢ FI¢ IF LOUD1 THEN¢ LOUD1==-2¢ SOUND(1,150,8,LOUD1)¢ FI¢ IF FREQ<168 THEN¢ FREQ==+8¢ SOUND(2,FREQ,10,4)¢ ELSE¢ FREQ=169¢ SOUND(2,0,0,0)¢ FI¢RETURN¢¢¢¢PROC HITCHUTE(BYTE WH)¢BYTE LP¢ FOR LP=0 TO 29 DO¢ IF MISX(WH)=TRX(LP) AND (MISY(WH)=TRY(LP) OR MISY(WH)=TRY(LP)+1) THEN TRSTATUS(LP)=2¢ PLOT0(TRX(LP),TRY(LP),0)¢ PLOT0(TRX(LP),TRY(LP)+1,10)¢ PLOT0(TRX(LP),TRY(LP)+2,0)¢ EXIT¢ FI¢ OD¢ IF TRY(LP) LSH 3 < FREQ THEN FREQ=TRY(LP) LSH 3¢ FI¢RETURN¢¢¢¢PROC HITMAN(BYTE WH)¢BYTE LP¢ FOR LP=0 TO 29 DO¢ IF MISX(WH)=TRX(LP) AND (MISY(WH)=TRY(LP)+1 OR MISY(WH)=TRY(LP)+2) THEN¢ TRSTATUS(LP)=3¢ PLOT0(TRX(LP),TRY(LP)+1,6)¢ PLOT0(TRX(LP),TRY(LP),0)¢ PLOT0(TRX(LP),TRY(LP)+2,0)¢ FI¢ OD¢ LOUD1=12¢RETURN¢ ¢¢¢PROC EXPLODECHOPPER(BYTE LP)¢BYTE LQ¢ FOR LQ=0 TO 59 STEP 2 DO¢ IF EXPSTATUS(LQ)=0 THEN¢ EXPSTATUS(LQ)=1¢ EXPSTATUS(LQ+1)=1¢ EXPX(LQ)=CHOPPERX(LP)¢ EXPX(LQ+1)=CHOPPERX(LP)+1¢ EXPY(LQ)=CHOPPERY(LP)¢ EXPY(LQ+1)=CHOPPERY(LP)¢ CHOPPERSTATUS(LP)=0¢ PLOT0(EXPX(LQ),EXPY(LQ),6)¢ PLOT0(EXPX(LQ+1),EXPY(LQ+1),6)¢ EXIT¢ FI¢ OD¢RETURN¢ ¢¢PROC HITCHOPPER(BYTE WH)¢BYTE LP¢ FOR LP=0 TO 29 DO¢ IF MISY(WH)=CHOPPERY(LP) AND (MISX(WH)=CHOPPERX(LP) OR MISX(WH)=CHOPPERX(LP)+1) THEN¢ EXPLODECHOPPER(LP)¢ EXIT¢ FI¢ OD¢ LOUD=12¢RETURN¢¢¢PROC MISSILEHIT(BYTE WH)¢BYTE DUM¢ DUM=LOCATE0(MISX(WH),MISY(WH))¢ IF DUM=0 THEN¢ PLOT0(MISX(WH),MISY(WH),84)¢ RETURN¢ FI¢ MISSTATUS(WH)=0¢ IF DUM=1 OR DUM=2 THEN¢ HITCHOPPER(WH)¢ SCORE==+1¢ ELSEIF (DUM=7 AND INDX<6 OR DUM=8 AND INDX>3) THEN¢ HITCHUTE(WH)¢ SCORE==+2¢ ELSEIF (DUM=8 AND INDX<4 OR DUM=9 AND INDX>1) THEN¢ HITMAN(WH)¢ SCORE==+1¢ FI¢RETURN¢¢¢PROC MODIFY()¢CARD XX¢ FOR XX=0 TO 103 DO¢ CHARSET(XX+8)=SHAPETABLE(XX)¢ OD¢RETURN¢¢¢PROC LAUNCHTROOPER(BYTE WH)¢BYTE LP¢ IF FATE>240-(LEVEL LSH 1) THEN¢ FOR LP=0 TO 29 DO¢ IF TRSTATUS(LP)=0 THEN TRSTATUS(LP)=1¢ TRX(LP)=CHOPPERX(WH)¢ IF TRX(LP)=0 THEN¢ TRX(LP)=1¢ FI¢ TRY(LP)=CHOPPERY(WH)+1¢ PLOT0(TRX(LP),TRY(LP),7)¢ PLOT0(TRX(LP),TRY(LP)+1,8)¢ PLOT0(TRX(LP),TRY(LP)+2,9)¢ EXIT¢ FI¢ OD¢ FI¢RETURN¢¢¢PROC ERASECHOPPER(BYTE WH)¢ PLOT0(CHOPPERX(WH),CHOPPERY(WH),0)¢ PLOT0(CHOPPERX(WH)+1,CHOPPERY(WH),0)¢ CHOPPERSTATUS(WH)=0¢ CHOPPERX(WH)=0¢ CHOPPERY(WH)=0¢RETURN¢¢¢PROC DRAWCHOPPER(BYTE WH)¢ PLOT0(CHOPPERX(WH),CHOPPERY(WH),1)¢ PLOT0(CHOPPERX(WH)+1,CHOPPERY(WH),2)¢RETURN¢¢¢PROC CLEARSCREEN()¢BYTE LP¢ FOR LP=0 TO 29¢ DO¢ IF CHOPPERSTATUS(LP) THEN¢ ERASECHOPPER(LP)¢ FI¢ IF TRSTATUS(LP) THEN TRSTATUS(LP)=0¢ PLOT0(TRX(LP),TRY(LP),0)¢ PLOT0(TRX(LP),TRY(LP)+1,0)¢ PLOT0(TRX(LP),TRY(LP)+2,0)¢ FI¢ IF MISSTATUS(LP)=1 THEN MISSTATUS(LP)=0¢ PLOT0(MISX(LP),MISY(LP),0)¢ FI¢ OD¢ FOR LP=0 TO 59 STEP 2 DO¢ IF EXPSTATUS(LP)=1 THEN EXPSTATUS(LP)=0¢ EXPSTATUS(LP+1)=0¢ PLOT0(EXPX(LP),EXPY(LP),0)¢ PLOT0(EXPX(LP+1),EXPY(LP+1),0)¢ FI¢ OD¢RETURN¢¢¢PROC MOVECHOPPER()¢BYTE LP,PS=[0]¢ FOR LP=0 TO 29 DO¢ IF CHOPPERSTATUS(LP)=1 THEN IF CHOPPERX(LP)=38 THEN ERASECHOPPER(LP)¢ ELSE¢ PLOT0(CHOPPERX(LP),CHOPPERY(LP),0)¢ CHOPPERX(LP)==+1¢ DRAWCHOPPER(LP)¢ LAUNCHTROOPER(LP)¢ FI¢ FI¢ IF CHOPPERSTATUS(LP)=2 THEN IF CHOPPERX(LP)=0 THEN ERASECHOPPER(LP)¢ ELSE¢ PLOT0(CHOPPERX(LP)+1,CHOPPERY(LP),0)¢ CHOPPERX(LP)==-1¢ DRAWCHOPPER(LP)¢ LAUNCHTROOPER(LP)¢ FI¢ FI¢ OD¢ IF PS=0 THEN CHARSET(8)=56¢ CHARSET(16)=28¢ PS=1¢ ELSE¢ PS=0¢ CHARSET(8)=254¢ CHARSET(16)=127¢ FI¢RETURN¢¢¢PROC LAUNCHCHOPPER()¢BYTE LP¢ IF FATE>230-(LEVEL LSH 1) THEN FOR LP=0 TO 29 DO¢ IF CHOPPERSTATUS(LP)=0 THEN CHOPPERY(LP)=RAND(HARD)¢ IF FATE>128 THEN CHOPPERX(LP)=38¢ CHOPPERSTATUS(LP)=2¢ ELSE¢ CHOPPERX(LP)=0¢ CHOPPERSTATUS(LP)=1¢ FI¢ DRAWCHOPPER(LP)¢ EXIT¢ FI¢ OD¢ FI¢RETURN¢¢¢PROC DRAWBASE()¢BYTE LP¢ FOR LP=19 TO 21 DO¢ PLOT0(LP,22,128)¢ OD¢ PLOT0(20,21,4)¢RETURN¢¢¢PROC AIMGUN()¢ IF STICK=11 THEN PS=3¢ ELSEIF STICK=7 THEN PS=5¢ ELSE¢ PS=4¢ FI¢ PLOT0(20,21,PS)¢RETURN¢¢¢PROC SHOOT()¢BYTE TRIG=644,LP,FLG=[0]¢ IF TRIG=1 OR FLG=0 THEN FLG=1¢ RETURN¢ FI¢ FOR LP=0 TO 29 DO¢ IF MISSTATUS(LP)=0 THEN MISSTATUS(LP)=1¢ MISY(LP)=20¢ IF PS=3 THEN MISX(LP)=19¢ ELSEIF PS=5 THEN MISX(LP)=21¢ ELSE¢ MISX(LP)=20¢ FI¢ MISSILEHIT(LP)¢ EXIT¢ FI¢ OD¢ FLG=0¢RETURN¢¢¢PROC MOVESHOTS()¢BYTE LP¢ FOR LP=0 TO 29 DO¢ IF MISSTATUS(LP)=1 THEN PLOT0(MISX(LP),MISY(LP),0)¢ IF STICK=11 THEN MISX(LP)==-1¢ ELSEIF STICK=7 THEN MISX(LP)==+1¢ ELSE MISY(LP)==-1¢ FI¢ IF (MISX(LP)<>39 AND MISY(LP)<>255 AND MISX(LP)<>0) THEN MISSILEHIT(LP)¢ ELSE MISSTATUS(LP)=0¢ FI¢ FI¢ OD¢RETURN¢¢¢PROC MOVEEXPLOSIONS()¢BYTE LP¢ FOR LP=0 TO 59 STEP 2 DO¢ IF EXPSTATUS(LP)=1 THEN PLOT0(EXPX(LP),EXPY(LP),0)¢ PLOT0(EXPX(LP+1),EXPY(LP+1),0)¢ EXPY(LP)==+1¢ EXPY(LP+1)==+1¢ EXPX(LP)==-1¢ EXPX(LP+1)==+1¢ IF EXPY(LP)<>22 AND EXPX(LP)<>0 AND EXPX(LP+1)<>39 THEN ¢ PLOT0(EXPX(LP),EXPY(LP),6)¢ PLOT0(EXPX(LP+1),EXPY(LP+1),6)¢ ELSE¢ EXPSTATUS(LP)=0¢ EXPSTATUS(LP+1)=0¢ FI¢ FI¢ OD¢RETURN¢¢¢PROC BASEEXPLODE()¢BYTE ARRAY ENDX(0)=[16 24 17 23 20],ENDY(0)=[22 22 19 19 17]¢BYTE LP,TIME=20¢ COLOR=38¢ FOR LP=0 TO 4 DO¢ PLOT(20,22)¢ D